/**
 * 对象类型：就是给对象的键和值定义类型
 */
// 空对象
// let Person: {} = {}

// 有属性的对象
// let Person: { name: string } = {
//     name: '张三'
// }

// 有属性和方法的对象
// let Person: { name: string, sayHi(): void } = {
//     name: '张三',
//     sayHi() { }
// }

// 定义类型换换可以省略分隔符
// let Person: {
//     name: string
//     sayHi(): void
// } = {
//     name: '张三',
//     sayHi() { }
// }

// 函数可以使用箭头函数类型
// let Person: {
//     name: string
//     sayHi: () => void
// } = {
//     name: '张三',
//     sayHi() { }
// }

// // 先定义类型
// type Item = {
//     name: string
//     sayHi: () => void
// }

// // 定义对象
// let user: Item = {
//     name: 'zhangsan',
//     sayHi() { }
// }

// 可选属性
type GangWeiData = {
    id?: number // 属性后加？，代表该属性是可选属性
    mingcheng: string
    paixu: number
    zhuangtai: boolean
    shijian: number
}

// 扩展键名：可能会造成类型不安全
type Obj = {
    id: number
    username: string
    [key: string]: string | number // 键必须是字符串，值必须是字符串或数字
}

let obj1: Obj = {
    id: 1,
    username: 'zhangsan',
    password: '3.14',
    height: 180,
    // sex: true // 扩展键名，值不能超出类型范围（string | number）
}

export default {}